// 创建axios实例并导出  配置请求拦截器/响应拦截器
import Message from '@/components/message'
import useStore from '@/store'
import axios, { AxiosError } from 'axios'
export const baseURL = `http://pcapi-xiaotuxian-front-devtest.itheima.net/`
const instance = axios.create({
  // 基地址
  baseURL,
  // baseURL: 'http://pcapi-xiaotuxian-front.itheima.net/',
  // 备用的两个地址
  // baseURL: 'http://pcapi-xiaotuxian-front-devtest.itheima.net/',
  // baseURL: 'https://apipc-xiaotuxian-front.itheima.net/',
  timeout: 5000,
})

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // config.headers!.a = 100
    // console.log(config) // config配置对象中有headers属性, 就是请求头
    const { user } = useStore()
    const token = user.userInfo.token
    if (token) {
      config.headers!.Authorization = `Bearer ${token}`
    }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
// 响应拦截器中两个函数: 正确的响应会经过函数1, 失败的响应会经过函数2
instance.interceptors.response.use(
  function (response) {
    return response
  },
  function (error: AxiosError<{ code: string; message: string }>) {
    // console.dir(error)
    // 统一处理响应失败的消息提示
    if (error.response) {
      if (
        error.response.data.code === '501' &&
        error.response.data.message === '三方登录失败'
      ) {
        Message.warning('QQ登录成功,请尽快完善信息')
      } else {
        Message.error(error.response.data.message)
      }
    } else {
      Message.error('响应异常,请稍后重试')
    }
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

export default instance
